// // 普通方法：target对应的是类的prototype
// // 静态方法：target对应的是类的构造函数

// // function nameDecorator(target: any,key: string):any{
// //   console.log(target, key)
// //   const descriptor:PropertyDescriptor={
// //     writable: false
// //   }
// //   return descriptor
// // }
// // 原型，方法名，参数所在的位置
// function paramDecorator(target: any,key: string,paramIndex:number):any{
//   console.log('target, key,paramIndex')
//   console.log(target)
//   console.log(key)
//   console.log(paramIndex)
//   target[key] = 'lee';
//   // const descriptor:PropertyDescriptor={
//   //   writable: false
//   // }
//   // return descriptor
// }

// // 修改的并不是实例上的name，而是原型上的name
// class Test{
//   getInfo(@paramDecorator name: string, age:number){
//     console.log(name,age)
//   }
// }

// const test = new Test();
// test.getInfo('Dell',30);
// // test.name = "dell lee"
// // console.log((test as any).__proto__.name)
// // console.log(test.getName())